const { userCollection } = require('../../common/constants');
const { ERROR } = require('../../common/error');

function isUsernameSet(userRecord) {
    return !!userRecord.username;
}
function isNicknameSet(userRecord) {
    return !!userRecord.nickname;
}
function isPasswordSet(userRecord) {
    return !!userRecord.password;
}
function isMobileBound(userRecord) {
    return !!(userRecord.mobile && userRecord.mobile_confirmed);
}
function isEmailBound(userRecord) {
    return !!(userRecord.email && userRecord.email_confirmed);
}
function isWeixinBound(userRecord) {
    return !!(userRecord.wx_unionid || Object.keys(userRecord.wx_openid || {}).length);
}
function isQQBound(userRecord) {
    return !!(userRecord.qq_unionid || Object.keys(userRecord.qq_openid || {}).length);
}
function isAlipayBound(userRecord) {
    return !!userRecord.ali_openid;
}
function isAppleBound(userRecord) {
    return !!userRecord.apple_openid;
}

/**
 * 获取账户账户简略信息
 * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#get-account-info
 */
module.exports = async function () {
    const { uid } = this.authInfo;
    const getUserRes = await userCollection.doc(uid).get();
    const userRecord = getUserRes && getUserRes.data && getUserRes.data[0];
    if (!userRecord) {
        throw {
            errCode: ERROR.ACCOUNT_NOT_EXISTS,
        };
    }
    return {
        errCode: 0,
        isUsernameSet: isUsernameSet(userRecord),
        isNicknameSet: isNicknameSet(userRecord),
        isPasswordSet: isPasswordSet(userRecord),
        isMobileBound: isMobileBound(userRecord),
        isEmailBound: isEmailBound(userRecord),
        isWeixinBound: isWeixinBound(userRecord),
        isQQBound: isQQBound(userRecord),
        isAlipayBound: isAlipayBound(userRecord),
        isAppleBound: isAppleBound(userRecord),
    };
};
